#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>

int Parseo(char * buf, char *arreglo[]);
void Busqueda(char *arreglo[]);

int main(int argc, char *argv[]){
	char *arreglo[100];
	char * logname;	
    char buf[1024];
    int arg;
 
    while(1){  
		char * path = (char *) getcwd(NULL, 0);
		logname = getenv ("LOGNAME");
		printf("%s # %s> ",logname,path);
			
        if ((fgets(buf, 1024, stdin) == NULL) || (strcmp(buf,"exit\n")==0)) return 0;
        else{ 
			printf("%s",buf);
			arg=Parseo(buf, arreglo);
			
			if(strcmp(arreglo[0],"cd")==0){
				printf("estoy en cd\n");
				if(chdir(arreglo[1])!=0)printf("Command not found\n");				
				else path = (char *)getcwd(NULL, 0);
				}
			else Busqueda(arreglo);
			}
        }
        
	return 0;
}
int Parseo(char *buf, char *arreglo[]){
	int i;
	arreglo[0]= strtok(buf," \n");
	i=1;
    while (arreglo[i] != NULL){
		arreglo[i]= strtok(NULL," \n");
        i++;
        }
    return i;
	}
	
void Busqueda(char *arreglo[]){
	//Debo buscar en cada carpeta de path, el ejecutable arreglo[0]
	char *path = getenv ("PATH");
	char *caminos[100];
	int i;
	
	printf("PATH: %s\n",path);
	caminos[0]=strtok(path,":");
	printf("caminos: \n%s\n",caminos[0]);
	i=1;
	while((caminos[i]=strtok(NULL,":"))!=NULL){
		printf("%s \n",caminos[i]);
		//En cada uno de los caminos debo probar si se puede ejecutar
		execv(caminos[i],(char* const*)arreglo[0]);
		i++;
		}
}
